HTTP服务器也就是平时我们所说网页服务器,其实这种嵌入式设备内嵌的网页服务器在我们日常生活中十分常见,例如我们天天使用的无线路由器。我们在配置无线路由器时� 都会使用浏览器打开其配置页面进行配置。这里我们使用的就是无线路由器里面内嵌的网页服务器功能。用W5500建立自己的网页服务器,你只在浏览器地址栏里键入W5500的IP地址,就成功在你的网页上显示出来了� 首先在main主函数中,我们完成对W5500的初始化,同时调用init_http_server()函数实现对HTTP Server的初始化。在这个初始化函数中,配置W5500的IP地址,MAC地址等基本网络参数,然后在主循环中调用do_http() 函数实现HTTP服务器。单片机作为HTTP服务器的具体工作过程在void proc_http(SOCKET s, uint8 * buf)中有详细过程,解析http请求报文并发送http响应报文�
HTTP Server实现原理图如下:while(1) /*循环执行的函�*/ { do_https(); /*打开HTTP Server*/ } void do_https(void) { uint8 ch=SOCK_HTTPS; /*定义一个socket*/ uint16 len; st_http_request *http_request; /*定义一个结构指�*/ memset(rx_buf,0x00,MAX_URI_SIZE); http_request = (st_http_request*)rx_buf; switch(getSn_SR(ch)) /*获取socket状�*/ { case SOCK_INIT: /*socket处于初始化状�*/ listen(ch); break; case SOCK_LISTEN: /*socket处于监听状�*/ break; case SOCK_ESTABLISHED: /*socket处于连接状�*/ if(getSn_IR(ch) & Sn_IR_CON) { setSn_IR(ch, Sn_IR_CON); /*清除中断标志�*/ } if ((len = getSn_RX_RSR(ch)) > 0) { len = recv(ch, (uint8*)http_request, len); /*接收http请求*/ *(((uint8*)http_request)+len) = 0; proc_http(ch, (uint8*)http_request); /*接收http请求并发送http响应*/ disconnect(ch); } break; case SOCK_CLOSE_WAIT: /*socket处于等待关闭状�*/ if ((len = getSn_RX_RSR(ch)) > 0) { len = recv(ch, (uint8*)http_request, len); /*接收http请求*/ *(((uint8*)http_request)+len) = 0; proc_http(ch, (uint8*)http_request); /*接收http请求并发送http响应*/ } disconnect(ch); break; case SOCK_CLOSED: /*socket处于关闭状�*/ socket(ch, Sn_MR_TCP, 80, 0x00); /*打开socket*/ break; default: break; } }HTTP Server的测试步骤如�